System-on-chip development environment generating method and computer-readable medium with program t
专利摘要:
The method for creating a system-on-chip development environment includes a compiler customization unit for building a compiler from a configuration specification file, an assembler customization unit for building an assembler, and a simulator generator for building a simulator, and the configuration specification file is a hardware for executing instructions. Contains the specification of. 公开号:KR20030084554A 申请号:KR1020020066498 申请日:2002-10-30 公开日:2003-11-01 发明作者:마쯔모또노부;오야마류이찌로;우찌다가쯔야 申请人:가부시끼가이샤 도시바; IPC主号:
专利说明:
A method of creating a development environment for developing a system-on-chip and a medium storing the program {SYSTEM-ON-CHIP DEVELOPMENT ENVIRONMENT GENERATING METHOD AND COMPUTER-READABLE MEDIUM WITH PROGRAM THEREOF} [70] The present invention relates to a development environment for use in the design development of a system-on-chip comprising, for example, a configurable processor, and more particularly to a design development environment for a system-on-chip. It relates to a method and a medium storing the program. [71] In recent years, the necessity for LSI applied to multimedia processing etc. is diversified. In addition, the market cycle for this LSI is shortening. For this reason, a system-on-chip design development environment for short-term development of an LSI optimized for an application is expected. Here, the development environment means software such as hardware required for building a system-on-chip or system development support tool. [72] In general, when a general purpose processor is installed in the LSI, the design cost of the hardware is almost zero. However, since the LSI of such a configuration is not optimized for an application, it is difficult to maximize the performance of the application. For this reason, recently, a configurable processor capable of selecting an instruction, a memory configuration, or the like has been provided. The provider of the configurable processor also provides a system for specifying a configuration and outputting a logical synthesis capable of logical synthesis. According to such a processor and a system, by specifying an option command or a memory size, it becomes possible to develop a processor having a configuration optimal for an application in a short time. [73] On the other hand, in general, when changing an instruction set or the like, software development tools such as a compiler and a simulator must also be changed. Therefore, by specifying the configuration, a system for generating a software development tool at the same time as hardware technology is provided. Such a system can significantly reduce the labor and time required to design software development tools. [74] Background Art Conventionally, a digital signal processor (DSP) coprocessor, which is configured for a reduced instruction set computer (RISC) core, has been developed. However, the DSP coprocessor can only use the Industry Standard Architecture (ISA), which is prepared in advance, and nothing else. There is also a configurable processor that can add new instructions, but only fixed types of instructions can be added. For this reason, it is difficult to cope with an architecture such as VLIW (Very Long Instruction Word), for example, and the flexibility is not sufficient. [75] In addition, in order to describe additional instructions, for example, a hardware description language (HDL) such as Verilog is used. For this reason, an instruction cannot be added efficiently. [76] In addition, it was difficult to create a required development environment from user-defined commands. Therefore, there is expected a system-on-chip development environment generation method capable of easily generating a development environment of LSI having high-performance hardware with sufficient flexibility, and a medium storing a medium storing the program. [77] According to one aspect of the present invention, there is provided a method for creating a development environment for developing a system-on-chip, the method comprising: interpreting an input command and configuring the system-on-chip according to the interpreted command. Based on the information in the specified configuration specification file, a method comprising generating a compiler customization section, an assembler customization section, and a simulator generation section is provided, wherein the configuration specification file includes designations of hardware executing the instructions, The compiler customization unit builds a compiler for developing a system-on-chip, the assembler customization unit builds an assembler, and the simulator generation unit builds a simulator. [78] According to another aspect of the present invention, there is provided a computer-readable storage medium storing a program for generating a development environment for developing a system-on-chip, comprising: a function for interpreting a command input to a computer and a command for interpreting the command; Thus, a storage medium is provided that includes a function for generating a compiler customization unit, an assembler customization unit, and a simulator generation unit based on the information in a configuration specification file in which a system-on-chip configuration is described, wherein the configuration specification file is an instruction. Wherein the compiler customization section builds a compiler for developing a system-on-chip, the assembler customization section builds an assembler, and the simulator generator builds a simulator. [1] 1 is a schematic view showing a system-on-chip development apparatus to which the present invention is applied. [2] 2 is a configuration diagram showing a configuration file generation unit. [3] 3 is a diagram showing a description example of a configuration specification file. [4] 4A shows a description example of a memory area common to all processors, FIG. 4B shows an example of a generated local memory map, and FIG. 4C shows a description example of an ISA definition file. [5] 5 is a diagram illustrating a configuration of a system-on-chip development environment generation unit. [6] FIG. 6 is a diagram illustrating an embodiment of an RTL generation unit shown in FIG. 5. FIG. [7] 7 illustrates an example of an RTL template. [8] FIG. 8 is a configuration diagram showing an example of a simulator customization unit shown in FIG. 5; FIG. [9] Fig. 9A shows an example of a simulator start up option file, Fig. 9B shows an example of a debugger start up option file, and Fig. 9C shows an example of a machine command function declaration header file. [10] FIG. 10 is a block diagram showing an embodiment of the compiler customization unit 43 shown in FIG. [11] Fig. 11A shows an example of a compiler startup options file, and Fig. 11B shows an example of a user-defined command file for generating a verification vector. [12] 12 is a block diagram showing a program configuration of the system-on-chip development environment generation unit 4 of the present invention. [13] FIG. 13 is a diagram showing an example of a configuration specification file. FIG. [14] FIG. 14 is a diagram specifically showing a description example of the register definition unit shown in FIG. 13; FIG. [15] 15 shows an example of the definition of an accumulator. [16] FIG. 16 shows an example of the definition of a shift mount register; FIG. [17] FIG. 17 illustrates an example of a coprocessor definition. FIG. [18] 18 is a diagram showing an example of a configuration specification file for the DSP module. [19] 19 shows an example of the definition of a SIMD instruction. [20] 20 is a diagram showing an example of description by one row; [21] 21 is a diagram showing an example of description by one row; [22] 22 is a diagram illustrating an example of technology using an indicator. [23] FIG. 23 shows an example of a SIMD instruction library. FIG. [24] Fig. 24 is a block diagram showing a method of generating a tool such as a compiler from an instruction library. [25] Fig. 25 is a diagram showing an example of an instruction set definition portion in the configuration specification file. [26] FIG. 26 shows a description example of a PTYPE row. FIG. [27] Fig. 27 is a diagram showing an example of description of head information. [28] FIG. 28 is a diagram illustrating operation of the head information and the pipeline. FIG. [29] 29 illustrates an example of scheduling information for a compiler. [30] 30 illustrates an example of a pipeline operation technique. [31] FIG. 31 shows an example of high-order synthesis of a user-defined module in the RTL generation unit. FIG. [32] 32 is a block diagram showing a method of matching interfaces. [33] Fig. 33 shows a method of generating ISA information, showing an example of a command definition relating to the command CPXOR3. [34] Fig. 34 is a diagram showing automatically generated ISA information. [35] 35 shows a verification program for command CPXOR3; [36] 36 is a view showing schematic operation of a simulator generator; [37] 37 is a perspective view illustrating an example of an overview of a system-on-chip development environment creation system. [38] <Explanation of symbols for the main parts of the drawings> [39] 1: System-on-chip development device [40] 2: configuration file generator [41] 3: user-defined module / user-defined instruction storage unit [42] 4: System-on-chip development environment generation unit [43] 9: control unit [44] 21: input analysis unit [45] 41: RTL generator [46] 41a, 41b: RTL template [47] 41c: Core RTL Technology [48] 41d: block connection [49] 41e: Senior Synthesis Processing Unit [50] 42: simulator customization unit [51] 42a: option command information extraction section [52] 42b: Simulator template [53] 43: Compiler customization section [54] 43a: option command information extractor [55] 43b: Option instruction machine instruction function declaration template [56] 43c: machine instruction function declaration extractor [57] 43d: join processing unit [58] 44: Assembler customization part [59] 45: verification vector generator [60] 50: computer system [61] 51: display [62] 52: floppy disk drive [63] 53: floppy disk [64] 54: optical disc drive [65] 55: optical disc [66] 56: keyboard [67] 57: drive unit [68] 58: memory card [69] 59: magnetic tape card ridge [79] EMBODIMENT OF THE INVENTION Hereinafter, embodiment of this invention is described with reference to drawings. [80] First, the system-on-chip development apparatus applied to this embodiment is demonstrated schematically using FIGS. 1-10. [81] <Configuration of System-on-Chip Development Device> [82] 1 shows a system-on-chip development apparatus 1. The system-on-chip development apparatus 1 includes a configuration file generation unit 2, a user-defined module and user-defined instruction storage unit 3, a system-on-chip development environment generation unit 4, and a performance evaluation unit ( 5), the termination determination unit 6, the change item setting unit 7, the input / output interface unit 8, and the control unit 9 are provided. [83] The system-on-chip development apparatus 1 is connected with an input unit 10 for inputting various kinds of information into the apparatus 1 and an output unit 11 for outputting various kinds of information from the apparatus 1. . As the input unit 10, for example, a keyboard, a mouse pointer, a ten key, a touch panel, or the like can be used. As the output part 11, a display apparatus, a printing apparatus, etc. are applied, for example. [84] 2 to 13 show the configuration of the respective parts in the system-on-chip development apparatus 1. [85] <Configuration of the configuration file generator> [86] 2 shows the configuration of the setting file generation unit 2. The setting file generator 2 includes an input analyzer 21, a local memory map generator 22, an option information storage 23, a device configuration storage 24, a cache configuration storage 25 and a local memory. The map storage unit 26 is provided. The configuration file generation unit 2 includes a configuration specification file (hereinafter also referred to as an architecture database file) describing a system-on-chip design configuration, variable value configuration information, priority item configuration information, target performance specification information, and Based on the change item list information supplied from the change item setting unit 7, a configuration on the system-on-chip design is generated and stored. The target performance specification information includes one or both of hardware performance and software performance. Performance indicators of hardware include area, frequency, and power consumption. Software performance indicators include code size, effective instruction number, and execution cycle number. [87] The input analyzer 21 analyzes the contents of the configuration specification file, and stores the contents of the configuration described in the configuration specification file in the option information storage section 23, the device configuration storage section 24, and the cache configuration storage section 25. Divided into parts. [88] In the configuration specification file, information such as whether there is an option command, whether there is a device, whether there is a cache, cache size, user-defined command, user-defined hardware module, memory map inside LSI, multiprocessor configuration (number of multiprocessors, etc.) It shall be described. In addition, in the description part of a user-defined command or a user-defined hardware module, the storage position of the file name which describes the user-defined command or the user-defined module (in this embodiment, the position of the user-defined module / user-defined command storage unit 3). ) Is specified by a description such as an absolute path or a relative path. [89] In the presence or absence of the device, the device includes an instruction memory, a data memory, and a coprocessor, and the variable items of the instruction memory and the data memory include a size and an address. In the memory map, the memory map includes an external memory area, an internal memory area, and an input / output area, and the external memory area also includes a designated item of a cache access area. Each memory area also includes latency information. [90] In addition, when specifying a configuration on the system-on-chip design from the configuration specifying file, the user selects one of the variable values defined in each of the storage units 23 to 26 in the configuration file generating unit 2. . This selected value is described, for example, in the configuration specification file as shown in FIG. [91] That is, for example, in the SIZE technique described below, the size of the built-in data memory can be selected from 1, 2, 4, 8, 16, 32 [KB], for example. When this SIZE description is omitted, it indicates that the size is 8 [KB], which is the default value. [92] DMEM: [93] SIZE Ptype = {1, 2, 4, 8, 16, 32}, default = 8, comment = "size of built-in data memory"; [94] In addition, the ISA_DEFINE description shown below indicates that an arbitrary character string must be described as an ISA definition file name of a user-defined command. [95] UCL: [96] ISA_DEFINE Ptype = string, default = "", comment = "ISA definition file name for custom command"; [97] In addition, you may make the said setting of a configuration by the interactive process via the input-output interface part 8. As shown in FIG. By allowing the configuration to be set interactively, the user can easily set the configuration without being aware of the syntax or the like of the configuration specifying file. Therefore, the time required for setting the configuration can be shortened as compared with the case where the file is directly described. You can also interactively handle all configuration settings. For this reason, mistakes, such as forgetting to set one configuration, can be prevented. [98] In addition, a variable value may be set in the configuration. When the variable value is set in the configuration, the configuration file generator 2 automatically derives the setting value of another configuration using any one of a basic setting, a template made for measuring the variable value, and a value set by the user. . By setting a variable value in the configuration, the user can simultaneously obtain a plurality of development environments and verification environments according to the variable range of the configuration. This makes it possible to realize a shortening of the LSI development cycle. [99] In addition, the highest priority item may be set in the configuration. When the highest priority item is set in the configuration, the setting file generation unit 2 generates a configuration such that the highest priority item is optimized for setting values of parts other than the highest priority item. This generation uses a template or a user-specified setting value based on the default setting and the highest priority item. By assigning a top priority item during configuration, the user can first create a development environment, a verification environment, and evaluate the configuration appropriate for the item without recognizing the system-on-chip configuration. [100] <Configuration of Local Memory Map Generator> [101] The local memory map generator 22 integrates the global map specified from the configuration specification file with local memory information of individual processors in the system-on-chip, and generates a local memory map for each processor in the system-on-chip. do. The global map is a memory area common to all processors as shown in FIG. 4A, for example. The local memory information includes, for example, an instruction memory, a data memory, an instruction cache, and a data cache. 4B shows an example of a generated local memory map. This generated local memory map is stored in the local memory map storage 26. [102] Here, the local memory area of the processor can be generated by reflecting the memory size specified by the configuration specifying file with respect to the memory area in the global map reserved for each local memory. Further, by specifying the shadow memory information of each processor in the global map in advance, it is also possible to manufacture a shadow memory including the local memory of another processor in the local map of each processor. [103] The option information storage section 23 turns on / off (on / off) of the option instructions in the instruction set of the processor embedded in the system-on-chip based on the analysis result of the configuration specification file by the input analysis section 21. Stores information about the type of [104] The device configuration storage section 24, on the basis of the analysis result of the configuration designation file by the input analysis section 21, relates to the information regarding the type of ON / OFF of the device incorporated in the system-on-chip and its size. Information, address information, information about the instruction memory or data memory of the processor, and information about optional hardware such as a coprocessor. [105] <Configuration of Cache Configuration Storage> [106] The cache configuration storage section 25 is based on the analysis result of the configuration specification file by the input analysis section 21, and the type of cache ON / OFF of the system-on-chip, the type of cache (direct, 2-way, 4-way, n-way), and size information. [107] <Configuration of Local Memory Map Storage Unit> [108] The local memory map storage section 26 stores information about the local memory map generated by the local memory map generation section 22. [109] <Configuration of user-defined module / user-defined instruction storage unit> [110] The user-defined module / user-defined instruction storage section 3 stores information about user-defined instructions in the instruction set of the processor embedded in the user-defined hardware module and the system-on-chip. Here, the information about the user-defined hardware module is described in the register transfer level (RTL) description or operation description, and the information on the operation of the instruction is described in the C model (including the C ++ model) and stored in the storage unit 3. It is preferable. The operation technique and the C model technique may be the same. Further, the information about the user-defined command is preferably stored in the architecture DB file designated by the configuration specifying file, for example, as shown in FIG. [111] <Configuration of System-on-Chip Development Environment Generation Unit> [112] As shown in FIG. 5, the system-on-chip development environment generation unit 4 includes an RTL generation unit 41, a simulator customization unit 42, a compiler customization unit 43, an assembler customization unit 44, and The verification vector generation part 45 is provided. This system-on-chip development environment generation unit 4 generates system-on-chip hardware, verification environment, and development design tool for every combination of configurations stored in the configuration file generation unit 2. [113] Hereinafter, the internal structure of this system-on-chip development environment generation part is demonstrated in detail. [114] <Configuration of RTL Generation Unit> [115] The RTL generation section 41 generates the RTL description of the processor embedded in the system-on-chip based on the configuration stored in the storage section of the configuration file generation section 2. [116] 6 shows an embodiment of the RTL generator 41. The block connection unit 41d refers to the configuration stored in the device configuration storage unit 24 and the cache configuration storage unit 25 and selects a template corresponding to the configuration set by the user from the RTL templates 41a and 41b. The high-level synthesizing processing section 41e generates the RTL technique by high-synthesizing the operating techniques that are the specifications of the user-defined instructions or the user-defined modules stored in the user-defined module / user-defined instruction storage section 6. In addition, the connection portion 41d generates the RTL technique of the processor by connecting the selected RTL template and the RTL technique from the high-level synthesis processor 41e to the RTL technique 41c of the processor core portion. In addition, when the specification in the memory | storage part 3 is RTL description, it connects so that an interface signal may match. [117] In addition, when a multiprocessor configuration is defined, the block connection unit 41d generates a plurality of processor technologies, and it is assumed that the block connection unit 41d generates the RTL technology of the multiprocessor that connects them by a bus. [118] In addition, the instruction memory, the data memory, the optional hardware, the instruction cache, and the data cache included in the RTL templates 41a and 41b are prepared in advance for each of the user selectable memory sizes. These RTL technologies can be selectively connected in accordance with a specified configuration. In addition, for the option command, a hardware template corresponding to the option command is prepared for all combinations of ON / OFF of the option command. [119] 7 shows an example of an RTL template. In Fig. 7, the RTL template of the option instruction unit is a combination of four RTL descriptions for the combination of ON / OFF of the division option instruction (DIV) and ON / OFF of the maximum minimum value option instruction (MINMAX). I am ready. These templates are selectively connected to the core RTL technology in accordance with the configurations stored in the device configuration storage 24 and the cache configuration storage 25. Also, for optional hardware such as a coprocessor, if it is designated as valid in the configuration, the already defined RTL technology is connected to the core RTL technology. In addition, if there is user-defined hardware, the hardware technology described by the user is connected to the core RTL technology. [120] By the above connection process, the RTL generation unit 41 generates the RTL description of the processor corresponding to the set configuration. For example, when the processor 1 is first constructed, the user adds 4 [KB] of instruction memory and 4 [KB] of data memory to the processor core as parameter designations for the configuration. RTL technology can be obtained automatically. [121] In addition, in the case of constructing the processor 2, the user may specify, for example, 2 [KB] instruction memory, 4 [KB] data memory, 2 [KB] instruction cache, as a parameter designation for the configuration. Add a data cache of 4 [KB]. In addition, the RTL description of the processor 2 can be obtained by adding the coprocessor and RTL description of some optional and user-defined instructions. [122] In addition, instead of preparing a plurality of RTL templates, an RTL technique can be obtained by reflecting the value set in the configuration in the RTL template expressing the variable item as a parameter. In addition, such parameterized RTL template may be set for each partial module, such as a memory and a cache. Alternatively, it is possible to set an RTL template for the entire processor including partial modules such as memory and cache. Moreover, it may be one RTL template including all parameters. [123] <Configuration of Simulator Customization Unit> [124] 8 shows an example of the simulator customization unit 42. The simulator customization section 42 generates a simulator for executing a command operation according to the configuration. [125] In Fig. 8, the recompile unit 42c recompiles the simulator of the C model by embedding and recompiling the C model of the user-defined hardware stored in the user-defined module / user-defined instruction storage unit 3 in the simulator template 42a. Build. In addition, the startup option information extraction section 42d refers to the data stored in the device configuration storage section 24 and the cache configuration storage section 25 in the configuration file generation section, and specifies a startup option. Create an options file (see FIG. 9A). [126] The combination processing unit 42e combines the reconstructed simulator supplied from the recompile unit 42c and the simulator startup option file supplied from the startup option information extraction unit 42d to execute a simulator for executing the command operation according to the configuration. Create [127] In addition, the simulator preferably includes means for outputting the execution result of the debug instruction when the specific address passes. Conventionally, there is an assertion error program for outputting an error when an error occurs during execution. However, when the device was normally executed, in order to check the progress, the process could not be read by embedding a command outputting the result in the application or stopping the execution by a debugger or the like. In contrast, if predetermined information is output when the address specified at startup is passed, the progress can be checked while the application is being executed by the simulator. For example, the simulator is started with a command as shown below. [128] sim-load test. hex-printx mem (0x400) at 0x1200 [129] Where sim represents a simulator of a system-on-chip, and -load test. hex is test. Hex indicates a command to load a hexadecimal file, and -printx mem (0x400) at 0x1200 indicates the command to print the contents of address 0x400 in memory when address 0x1200 is passed. [130] That is, the simulator remembers the instruction specified by this argument, and prints the contents of address 0x400 to the console whenever the program counter passes address 0x1200. At this time, the observation code is not embedded in the application program. Therefore, the simulation can observe the execution of the application program without affecting statistical information such as the number of instructions and the number of cycles at all. In addition, there is no need to stop the execution at a specific address so that the value of the memory can be read and displayed by other people's hands. For this reason, the application program can be simulated while taking statistical information accurately and checking the results in particular during attention. For this reason, LSI can be developed efficiently. [131] In addition, the simulator preferably stops execution when a memory access is made to a region other than the designated area. When the simulator is started up according to the configured configuration, the available memory is clearly given. For example, accessing a memory in an area not mounted on the substrate results in a bus error, for example, and subsequent operations are not guaranteed. Programs that are not guaranteed to work should be corrected early by pointing out errors when running the simulator. Thus, the simulator designates an existing memory area, and sets an area that is not explicitly specified to be prohibited from access. The simulator also warns and stops the operation of the program when this access prohibition area is accessed. In addition, the simulator has a conversation mode (debug mode), and when it is switched to the conversation mode, it is possible to analyze where an error has occurred. In other words, when the simulator is operating in communication with the debugger, the simulation operation is stopped to transition to the debugger's command wait. In addition, an error indicating that the invalid area is accessed is displayed, and the error of the program is transmitted to the user reliably and early. [132] The decode circuit of the memory may be configured by omitting the connection of the upper address signal lines. In this case, even if a program with an incorrect address is executed as a target, it does not become a bus error. However, if the access is a write, the contents of an unintended address may be rewritten, and the later execution result may not be as expected. If you run the wrong program with the RTL simulator, you will not find the error right away. However, when the correct mapping information is provided and executed so that only the correct address is accessible to the simulator, it is possible to immediately warn that an address outside the specified range has been accessed. Therefore, the user can detect the wrong program at an early stage, thereby saving unnecessary analysis time. For this reason, the development cycle can be shortened. [133] In addition, the debugger refers to the data stored in the device configuration storage unit 24 and the cache configuration storage unit 25 to generate a debugger startup option file as shown in FIG. 9B. By using the debugger startup options file, the debugger can perform operations according to the configuration. [134] The debugger also preferably includes means for reading statistical information of the simulator as a virtual register or variable. The debugger reserves a variable named $ profile as a special variable. Statistical information is managed for each area. This statistical information is displayed by the debugger's variable read command print. For example, to display the third piece of information in the area, enter something like print $ profile [3]. [135] dbg> print $ profile [3] [136] profile3: Count: 7 Inst = 123 Cycle = 145 [137] dbg> [138] In addition, the language tool preferably includes means for outputting a debug instruction for a simulator together with an address as debug information equivalent to a symbol or a source line (it is not reflected in the target machine instruction). The compiler has an extension for outputting the result and the like to the standard output by a simulator or the like. Statements following #pragma cosoleout are not translated into the target machine language and are stored in the file as debug information, just like symbol names and line numbers. When the simulator reads the object file with debug information, the simulator stores address information in which the #pragma statement is defined, and also stores printf ("a =% d n", a) which is debug output information. When the simulator tries to execute the address, it determines that the debug information should be output, and sends a printf statement to the parser to output the debug information. [139] In this way, the debug information can be output when the simulator is executed without affecting the machine instruction of the target, and the contents can be checked without interrupting the execution of the simulator. At this time, the statistical information collected at the time of running the simulator is the same information as that executed at the target. In other words, the same object code is available to the target and the simulator. Therefore, the development cycle can be shortened by the time such that recompilation or the like does not occur due to the difference in the execution environment. In addition, since a single object file can be shared, it is obvious that management becomes easy. [140] func (int b) { [141] float a: [142] for (I = 1; I <20; i ++) { [143] A = b / I; [144] #pragma consoleout printf ("a =% d ¥ n", a); [145] } [146] <Configuration of Compiler Customization Part> [147] The compiler customization unit 43 refers to the data stored in the option information storage unit 23 and the user-defined module user-defined instruction storage unit 3, and includes a machine instruction function declaration as shown in FIG. 9C. Create a command function declaration header file. In addition, the machine instruction function declaration here describes processor specific instructions as function declarations of a high-level language in order to specify processor-specific instructions directly from a high-level language. [148] 10 shows an embodiment of the compiler customization unit 43. In Fig. 10, the machine command function declaration extracting unit 43c refers to the user defined command stored in the user defined module and user defined command storage unit 3, and extracts the corresponding machine command function declaration. Further, the association processing section 43d refers to the data stored in the option information storage section 23 and selects the machine instruction function declaration corresponding to the valid option instruction from the template 43b already designated. In addition, the combining processor 43d generates the machine command function declaration header file by combining the template 43b and the machine command function declaration supplied from the machine command function declaration extracting unit 43c. This machine command function declaration header file contains machine command function declarations that correspond to the option commands and user-defined commands that are enabled in the configuration. [149] In this way, the user can directly specify and use option commands and user-defined commands specified in the configuration from the high-level language program. [150] In addition, the compiler customization section 43 has an option instruction extraction section 43a. The option command extraction unit 43a refers to the data stored in the option information storage unit 23 to obtain information of the option command that can be used for optimization. In accordance with the information of this option instruction, the compiler customization section 43 generates a compiler startup options file (see Fig. 11A) that specifies options at the startup of the compiler. [151] In this way, the information of the available option instructions can be reflected in the optimization of the compiler. In addition, since the compiler's function library is recompiled from the source using a startup option file, it is possible to create a library containing the available option commands. [152] <Configuration of the assembler customization part> [153] The assembler customization unit 44 rebuilds the assembler by embedding available mnemonics of instructional and user-defined instructions and instruction format information. According to this assembler customization unit 44, a corresponding object code can be generated for an assembler program composed of a combination of all available instructions. [154] <Configuration of Validation Vector Generation Unit> [155] The verification vector generation unit 45 generates a verification vector that verifies the configuration of the designated system-on-chip by referring to the specified configuration in each storage unit in the configuration file generation unit 2. Here, when the scale of the system-on-chip is large, it is necessary to focus on the portion changed from the basic configuration in order to finish the verification within a limited time. Therefore, it is preferable that the verification vector generate a verification vector group corresponding to each instruction based on the instruction set description so as to verify the specified option instruction, the cache of the designated size, etc. intensively (Fig. 11B is for generating the verification vector). Shows an example of a user-defined command file). [156] Next, this embodiment is demonstrated more concretely. [157] In the environment of this embodiment, an RTL, a compiler, an assembler, a simulator, a verification vector, and a debugger are automatically constructed from a configuration specification file (architecture DB file) describing the instruction operation of a processor. This configuration specification file contains a description (architecture type specification) for specifying one of a plurality of predefined architectures. Here, examples of the architectural type include those executed in the VLIW mode (which are executed in a specific pipe (VLIW slot)) and DSP instructions. Based on the designation of this architectural type, the instruction scheduling of the compiler and the parallelization functions of the VLIW are controlled. In addition, the performance estimation value in the instruction set simulator is adjusted. By using this environment, a user can define a command independently according to an application. This user-defined command is called a user-defined command. In addition, a program can be written in a high-level language, and the performance of the program can be evaluated using a simulator. [158] In addition, for a user-defined instruction as a basic component, an environment of machine instruction functions is automatically constructed. By using a machine instruction function, it becomes possible to use functions that the compiler has, such as instruction scheduling, VLIW parallelism (instruction packing), register allocation, and the like. [159] Hereinafter, in each embodiment, it demonstrates concretely. [160] <First Embodiment> [161] 12 shows a first embodiment of the present invention. FIG. 12 schematically shows an embodiment for adding a command of the system-on-chip development environment generation unit 4 shown in FIG. 1, which is almost the same as the configuration shown in FIG. [162] The configuration specification file as the architecture DB file supplied from the configuration file generation unit 2 is supplied to the parser. This parser parses the configuration file. The command interpreter interprets a command specified by the user and executes, for example, an RTL generator, a simulator generator, a compiler customizer, an assembler customizer, a verification vector generator, and a debugger generator in accordance with the contents of the interpreted command. To control. As the execution method, a series of processes are registered in advance, and a batch process, a conversation type process, etc., which execute these processes continuously, can be selected. The command specified by the user is input using, for example, a graphical user interface (GUI) or a character base user interface (CUI). The parser may be activated by a command interpreter. [163] Fig. 13 shows an example of the configuration specification file as the architecture DB file. In the configuration specification file, for example, processor specification, register definition, instruction definition, and the like can be described. In designating a processor, for example, the processor name and type can be described. In FIG. 13, the type (2_WAY_VLIW) is described as the processor architecture. That is, it shows that 2_WAY VLIW is selected from the predefined architecture. [164] In addition, the instruction definition consists of the mnemonic, bit pattern, and operational description of the instruction. Here, the bit pattern includes bit information of the operation code and the operand. [165] The operation technique may describe bit division, bit combining, sine / zero extension, overflow operation, etc. in addition to the operation technique of a normal program. In addition, it is also possible to use temporary variables necessary for realizing a SWAP operation or the like. [166] In addition, only a part is described in FIG. [167] According to the first embodiment, the command interpreter controls the execution order of the RTL generation unit, the simulator generation unit, the compiler customization unit, the assembler customization unit, the verification vector generation unit, and the debugger generation unit in accordance with the contents of the analyzed command. For this reason, the user can arbitrarily set the generation order of a development environment. Therefore, the development environment can be arbitrarily generated according to the development order of the application. [168] <2nd embodiment> [169] 2nd Embodiment relates to the said register definition part. [170] FIG. 14 specifically shows a description example of the register definition unit shown in FIG. The register definition section contains the number of general purpose registers, the register usage of the compiler (function return value registers, argument registers, registers following functions called by function calls, registers not following functions called by function calls, and registers for stack pointers. , Registers for global pointers, registers for Tiny pointers, register 0, etc.), alias definitions for general purpose registers, and control register definitions. Register usage can be omitted. If omitted, a compiler with default usage will be created. [171] In Fig. 14, the number of general-purpose registers GPR is 16, and the method of using the registers of the compiler is that the function returns the register RET for register 0, the function argument register ARG for registers 1, 2, 3, 4, and zero dedicated registers. ZERO is defined as register 12, and the stack pointer register SP as register 15. In addition, a link pointer LP is defined as a control register. [172] In alias definitions, you can define aliases for registers. If no alias is required, omit it. By using alias definitions, if you write your own assembly code, you can write your own custom code. For example, if the register corresponding to the stack pointer SP is register 15, the SP is defined as an alias of register 15. This allows the assembler to recognize the SP as register 15 when it is described with the SP in assembly code. [173] In addition, when the number of registers is small, some special use registers, for example, Tiny pointer register TP (not shown) may be treated as a general purpose register. In this case, when this register is used as a Tiny pointer, it is described as "TP", and when this register is used as a general purpose register, a register number is described. In this manner, assembly code can distinguish whether this register is used as a Tiny pointer or a general purpose register. Therefore, a highly conservative assembly code can be constructed. [174] Based on the information described in the configuration specification file, compilers, assemblers, simulators, debuggers, verification vectors, and the like are customized. That is, as shown in Fig. 12, the compiler customization section is supplied with register usage and register aliases, and the assembler customization section register name and register aliases, RTL generation section, simulator customization section, verification vector generation section, and debugger generation. The register is supplied with a register name. [175] For example, the compiler customization section generates a compiler based on the information of general registers and control registers defined in the register definition section. The compiler has a definition of register pseudo-variables that allow direct access to each register. By using this register pseudo-variable, the user can directly access each register of the processor in a high-level language. [176] It is also possible to define an accumulator and shift mount register in the configuration specification file. [177] 15 shows an example of the definition of the accumulator. This example shows two 256-bit accumulators. [178] 16 shows an example of the definition of a shift mount register. This example shows that there are two shift mount registers. [179] According to the second embodiment, the user can change how to use the registers of the compiler in accordance with the application. For example, if an immediate "0" is used frequently in an application, there is no need to generate an instruction for making an immediate "0" by always preparing a register with a value of "0". For this reason, both code size and execution performance can be improved. [180] In addition, when not immediately using "0" in an application so much, it is possible to increase the number of registers for other purposes by not always preparing a register with a value of "0". Therefore, the frequency of memory accesses due to insufficient registers can be reduced, and both the code size and the execution performance can be improved. [181] In addition, the register definition has a default, and when the user omits the use of the register, the default usage is set. In this way, when the compiler uses the default usage, the user can measure the performance of the application. By referring to the measured performance, better register usage can be specified. [182] The compiler also has definitions for register pseudo variables. This makes it possible for the user to use register pseudo variables for accessing all the registers described in the register definition in a high level language. This register pseudo-variable is useful when accessing special registers such as control registers in a high level language, and may be used in conjunction with the compiler's inline assembly function. Therefore, the function of preparing register pseudo variables of all registers is effective. [183] In addition, the register definition unit has an alias definition and can define a register name according to a user's preference. Therefore, it is possible to construct an assembly code having good usability and high maintenance. [184] Third Embodiment [185] Next, a third embodiment of the present invention will be described. The third embodiment relates to VLIW. [186] The operation definition of the command relating to the VLIW is made in the command definition unit in the configuration specifying file as the architecture DB file. The instruction definition section describes the specification of the instruction, the operand (OP) code, and the operation contents. Based on the specification of the instruction and the information of the OP code, an assembler definition file is defined which defines the operation of the assembler. Also, based on the definition of the operation contents, information which is not described in the specification specification of the instruction, information necessary for the operation of the instruction, for example, a high register and a low register which do not appear in the instruction mnemonic but are required for reading or writing data. It also collects the accumulator information and applies it to machine instruction function definitions. This allows the compiler to have better register allocation and instruction scheduling. [187] You can also define a coprocessor in the configuration file. That is, the coprocessor can be connected to a processor core such as, for example, a RISC core, like the processor 2 shown in FIG. Examples of this coprocessor include VLIW (Very Long Instruction Word) mode and DSP (Digital Signal Processor). [188] 17 shows an example of a coprocessor definition. To distinguish it from the core instructions, it has an architectural type that contains information indicating that it is a coprocessor definition. That is, the name of the coprocessor and the type of coprocessor are described. Following this description, you define register definitions and instruction definitions as relevant information in the coprocessor definition. The relevant information of the coprocessor definition includes, in addition to the register definition and the instruction definition, whether VLIW mode is implemented (none, 2 parallel, 3 parallel), or arithmetic data width definition (width of data guaranteed during coprocessor operation). have. [189] When the VLIW mode is implemented, information (V3 in FIG. 17) indicating where the coprocessor instruction should enter the slot of the VLIW mode is included in the instruction set definition. The definition of this slot is determined depending on the use of the processor, and becomes information indicating which slot enters the instruction when parallelizing the instructions. [190] Based on this information, the machine instruction function definition file for the coprocessor instruction is created. The compiler customization unit may parallelize a user-defined coprocessor instruction based on the machine instruction function definition file. In addition, the assembler customization unit can check whether parallelism is correct in terms of use, based on this machine instruction function definition file. [191] The slot information is supplied to the verification vector generator. The verification vector generating unit generates a verification vector necessary for verifying the operation of the processor for the parallelized instruction based on the information of the slot. [192] The operation definition width information is information of how many bits the simulator treats the bit width of the temporary variable and the bit width after the sign extension when there is a temporary variable in the operation definition of the instruction or when there is a sign extension operation. This width information depends on the bit width of the register defined within the register definition of the coprocessor. For example, if the operation width of the coprocessor register is specified as 64 bits, the operation definition width information can be specified up to 64 bits. This calculation definition width information is supplied to the simulator customization unit and reflected in the simulator. [193] According to the third embodiment, the user may have a definition file of the machine command function for all the defined commands. Because of this, by using machine instruction functions, users can get the compiler's register allocation, instruction scheduling, and VLIW parallelism. Therefore, it is very beneficial in terms of application development. [194] In addition, the slot definition has information indicating which slot enters the instruction when parallelizing the instruction. For this reason, it is possible to park the instruction expressed by the machine instruction function in the appropriate slot, or to use the slot in which the assembler is appropriate, which facilitates the user's application development. [195] In addition, the slot definition information used for parallelizing the instructions is reflected in the machine instruction function definition. For this reason, when the VLIW mode is implemented, when the user-defined coprocessor instruction is parallelized, information indicating which slot enters the instruction is supplied to the machine instruction function definition. For this reason, the compiler can correctly parallelize VLIW with respect to machine instruction functions. Machine instruction functions can be used within high-level languages, thus facilitating the development of user applications. [196] In addition, the calculation definition width information is reflected in the simulator. For this reason, the simulator can match the operation of the instruction to the specifications of the processor. Therefore, it is possible to match the operation of the simulator with the operation of the actual processor. [197] Slot information is also reflected in the assembler. For this reason, the assembler can check whether the parallelization part of the instructions in the assembly code manually written by the user is the specification. [198] In addition, the slot information is reflected in the verification vector. Therefore, a verification vector necessary for verifying the operation of the processor with respect to the parallelized instruction can be obtained. [199] <4th embodiment> [200] Next, a fourth embodiment of the present invention will be described. The fourth embodiment relates to a DSP. [201] As a function for embedding the DSP as a user-defined module, the configuration specification file has an identifier to distinguish it from other modules. Within this identifier, definitions relating to DSP are described. In the instruction definition of the DSP, an instruction of arbitrary bit width can be defined. In the register definition, a register of any bit width can be defined. [202] 18 shows an example of a configuration specification file for the DSP module. At the beginning, an identifier for architecture identification, DSP-NAME, is described. In addition, a register width definition REG_WIDTH is added to the register definition section <dsp_register>. In this example, the register width is set to 20 bits. In addition, the instruction definition unit <dsp_ISA> defines 20-bit instructions. [203] In addition, the configuration specification file for DSP modules can describe the information which specifies the position of the decimal point of the fixed-point library which is not shown in figure. This information is supplied to the compiler customization section and reflected in the compiler's fixed-point library. [204] In addition, the function specialized in the DSP of a compiler can be described. This function is, for example, at least one of a correspondence between a complex data type, an X / Y memory, a circular buffer, a fixed point data type, bit inversion, and a heterogeneous register set. [205] According to the fourth embodiment, the configuration specification file includes a description in which the processor is of DSP type and the hardware specification is in DSP instruction format. In the DSP instruction format, the bit width of the instruction can be set. For this reason, the user can flexibly set the bit width of the command in accordance with the purpose of the application. Therefore, the user can set the DSP suitable for the required performance, thereby reducing unnecessary costs. [206] In the DSP instruction format, the register width can be set. Therefore, the user can flexibly set the bit width of the register in accordance with the purpose of the application. Therefore, the user can set the DSP suitable for the required performance, thereby reducing unnecessary costs. [207] In addition, the compiler's fixed-point library generally corresponds flexibly to fixed-point positions. For this reason, performance will fall. However, in this embodiment, since the information which designates the position of the decimal point of the fixed point library is reflected in the fixed point library of a compiler, performance deterioration can be prevented. [208] In addition, the user can use functions specialized for the DSP of the compiler. For this reason, not only the development period of the application can be shortened, but also the performance of the application can be improved. [209] <Fifth Embodiment> [210] The fifth embodiment relates to a single instruction multiple data (SIMD). The fifth embodiment describes a process of processing a plurality of SIMD data into one, and generates a simulator from this description, or enables correspondence with a multimedia data type. [211] In other words, when the instruction can handle the SIMD data, information indicating that the SIMD data is handled is described in the instruction definition portion in the configuration specification file. This information is, for example, the data length handled by the instruction and the data length of each instruction operand. This information specifies the SIMD data width and applies to machine instruction function definitions and the generation of extended declarators for SIMD data in high-level languages. This makes it possible for the user to easily handle the SIMD data. Next, a technical example is shown. [212] CPPACK. B: CRo, CRq, CRp: [213] … [214] Cop: "SIMD = B, Pack = B: H: H": [215] … [216] The above example shows that the data length of the "CPPACK.B" instruction is 8 bits. That is, if the register is 64 bits, it is 8 parallel, indicating that this register width is equal to the coprocessor register width in the register definition section. In addition to "B", "H" (half word, ie, 16 bits) and "W" (word, ie, 32 bits) can also be designated. Further, unsigned and signed data are distinguished according to the presence or absence of "U". For example, when described as "BU", 8 bits of unsigned data are represented. [217] In addition, by specifying "Pack = B: H: H", the operands "CRo, CRq, CRp" of the "CPPACK.B" instruction are each signed 8 bits, signed 16 bits, and signed 16 bits. It indicates that the data is. [218] 19 shows an example of the command definition of "CPADD.H" in the SIMD command. The coprocessor register of the coprocessor in which this instruction is defined is said to be 64 bits wide, for example. The data length of this command is " SIMD = H ", i.e. signed 16 bits. In other words, this instruction computes 16 bits of data in four parallels. In addition, "PACK = H, H, H" indicates that the operands "CRl, Ckm, CRn" of this instruction are 16-bit signed data, respectively. The operation definition also shows that this instruction adds the signed 16-bit data in parallel. These pieces of information are supplied to the compiler customization section and the simulator customization section. In the compiler customization section, this information is reflected in the compiler's generation of high-level language declarators, machine instruction function generation, register allocation, and instruction scheduling functions. In the simulator customization unit, these information is reflected in the operation of the simulation and the output function of the simulation result. [219] In the example shown in FIG. 19, the operation description of the SIMD instruction which adds fourteen bits of signed 16-bit data in parallel is shown by four lines. However, it is possible to describe this operation technique in one line. [220] An example of a technique is shown below. [221] CRl. h = CRm. h + CRn. h;… Yes (1) [222] In the above example (1), ".h" is a technique corresponding to "PACK = H, H, H". [223] 20 shows an example of the description in one row. [224] When the description of "PACK" is, for example, "PACK = HU, B, BU", the above example (1) is described as follows. [225] CRl. hu = Ckm. b + CRn. bu;… Yes (2) [226] Fig. 21 shows a description example by the first row. [227] Further, by using the index (subscript) "i", it is possible to simplify the technique in which the arrangement of data as shown next does not match. [228] CRl [15: 0] = CRm [63:48] + CRn [63:48]; [229] CRl [31:16] = CRm [47:32] + CRn [47:32]; [230] CRl [47:32] = CRm [31:16] + CRn [31:16]; [231] CRl [63:48] = CRm [15: 0] + CRn [15: 0]; [232] A simplified technical example is shown below. [233] CR1 [i] = CRm [3-i] + CR [3-i]; Yes (3) [234] For example (3), the indicator "i" takes a value depending on the data width of the instruction and the coprocessor register width. If " SIMD = H " and the data width of the coprocessor register is 64 bits, the value of the index " i " [235] 22 shows an example of the technique using the above indicator. [236] According to the fifth embodiment, information relating to the SIMD instruction is described in the instruction definition portion of the configuration specification file. For this reason, the comparator customization unit can generate the definition file of the machine instruction function for generating the SIMD instruction based on the information about the SIMD instruction. Machine instruction functions can be used within a high-level language, thus facilitating user application development. [237] You can also use special modifiers for declaring SIMD data within high-level languages. For this reason, the application development of a user can be promoted. [238] Further, the simulator customization unit customizes the operation of the simulator based on the information about the input SIMD instruction. For this reason, the simulator which operates correctly with respect to a SIMD instruction can be created. [239] Further, the simulator customization unit customizes the result output function of the simulator based on the information on the input SIMD instruction. For this reason, the output result of the simulator which is easy to interpret about a SIMD instruction can be produced | generated. [240] In addition, the operation description of a SIMD instruction can be described as one instruction combining a plurality of instructions, or can be described using an indicator. For this reason, the description of the instruction operation of a SIMD instruction can be simplified. Therefore, the description of the instruction operation of the SIMD instruction can be made into a technique that is intuitively understandable to the user. [241] Sixth Embodiment [242] The sixth embodiment relates to an instruction library. [243] You can add commands that meet the specifications of the configuration file. The system-on-chip development environment generation system has defined instructions and is libraryed. This is hereinafter referred to as an instruction library. This command library is grouped by command type. By selecting the necessary commands from the command library, the user can create a development environment specialized for the application. [244] 23 shows an example of a SIMD instruction library. These commands in the SIMD instruction library are optional, the configuration specification file for them, and the RTL are prepared in advance separately from the basic instructions. The user can select and use all of these commands or commands of a specific data type. [245] In Fig. 23, any one of mnemonic "UB, B, UH, H, UW, W" is described as ".xx" as a data type used by the instruction. This technique is selectable by the user. In addition, as shown in FIG. 23, it is also possible to omit the description of mnemonics. When the mnemonic is fixed to any one of "UB, B, UH, H, UW, W", for example, it can also be specified as follows. In this example, the mnemonic is fixed at "H". [246] CPADD. H // 2-operand 32bit addition (A <-A + B) [247] Even in the case described above, if the description of the mnemonic is changed, it is possible to cope with the change. [248] Fig. 24 shows a method of generating a tool such as a compiler from the instruction library. When a user uses a command of a command library, corresponding intermediate files IF1 and IF2 are generated from a plurality of command libraries ADB1 and ADB2, for example. This intermediate file IF1, IF2 merges with the intermediate file IF3 of the basic command. By incorporating this merged intermediate file into a compiler or the like, the whole environment is constructed. [249] The above example generated intermediate files from each command library and merged these intermediate files. However, the generation of the intermediate file can be omitted, and the necessary commands selected from each command library may be merged directly. [250] In addition, a function of assigning a type, for example, slot information, to a command may be set so as to obtain an optimum scheduling performance for an application requested by the user without changing the function of the command of the designated command library. [251] Also, for example, data transfer instructions between the core processor and the coprocessor are necessary when defining the coprocessor. In this way, if the instruction (reservation instruction) accompanying the main instruction is set to be automatically merged, the compiler can efficiently generate the instruction library instruction from the source level of the high level language. Alternatively, the reserved command may be explicitly described in the command library. [252] In the above example, the case where the merged file is reflected to the compiler has been described. However, not only this but, by supplying the merged file to the RTL generation unit, the implementation can be selected without changing the function of the instruction of the designated instruction library. For example, it is also possible to create an RTL template with size priority. With such a configuration, the performance of the application can be maintained and the size of the generated RTL can be minimized. Therefore, increase of chip size can be suppressed and cost can be reduced. [253] In addition, it is also possible to generate an RTL template by a circuit capable of high-speed operation with performance priority without changing the function of the instruction of the designated instruction library. With such a configuration, performance can be improved, for example, the latency of an application can be reduced. [254] According to the sixth embodiment, the data type handled by the instruction described in the instruction library can be set corresponding to the application. This makes it possible to develop a processor having instructions suitable for the application. [255] In addition, even when the data type of the instruction described in the instruction library is determined, the data type can be changed. For this reason, it becomes possible to change into the instruction suitable for an application. [256] In addition, by selecting necessary instructions from a plurality of instruction libraries and merging these selected instructions, one processor can be set. This makes it possible to generate a processor more suited to the nature of the application. [257] Seventh Embodiment [258] The seventh embodiment describes high-level operation descriptions in the configuration specification file as the architecture DB file. [259] The senior operation description in the configuration specification file can be almost equivalent to a "sentence" in the C language. However, "!!" (bitwise concatenation), "[]" (partial bit truncation), and logical operators are different from the C language. In addition, the high-level operation technique of the present embodiment has a feature that bit connection is used on the left side of the equation. In addition, the high-level operation technique of the present embodiment does not include the concept of a clock and describes the relationship between the value of the register or memory before the instruction execution and the value of the register or the memory after the instruction execution. [260] The differences and limitations of the high-level operation technique in the present embodiment are shown below. [261] There is no data type. [262] There are rules for variables that can be used. [263] Can write bit constants. [264] !! indicates a bitwise connection. [265] [Msb: lsb] indicates partial bit truncation. [266] And, or, xor, nor, and nand represent bitwise logical operators. [267] (Signed) and (Unsigned) represent cast operators. [268] Store operations can use functions such as Mem Word () on the left side. [269] (Which can be used as a variable) [270] Operand Variable [271] Register variable [272] Temporary variable [273] (Operand variable) [274] The operand variable is described in the operand (<operand>) of the instruction definition and can be described as follows. [275] <Register register> [276] <(abs)> <(abs)> [277] <disp type> <disp () type> [278] <cpx> (real part) (imaginary part). Complex number [279] <int>… essence [280] <flt>… Floating point [281] <Immediate type> [282] These must match the specification of the instruction described in the preceding operand, the alphabet representing the register parameter, and the bit width of the designator. [283] (Register variable) [284] Register variables are registers other than operand variables and can be described as follows. [285] Specific notation (name designation, index notation by number) [286] E.g. PC, SRRO, CCR3, [287] Assignment [288] Example: identification string + '[' expression ']' [289] Example: CTR [Imm4] [290] Note 1: Identification string + index + '[' value ']' is the partial bit truncation. [291] Example: CTRn [4] is a partial bit. CTR [4] is the same as CTR4. CTR [Rn] [3: 0] can also be described. [292] Note 2: Negative notation (parameter notation, Rm, etc.) shall be classified as operand variables. Negative notation other than operand variable is an error. [293] (Primary variable) [294] Primary variables are variables that are not operand variables or register variables. The name of the primary variable can be one of the following: [295] · Conforms to the naming convention for variable names in the C language. [296] Not overlapping the defined register name [297] Not beginning with the prefix of each specifier in the operand variable [298] not beginning with abs-, imm-, Imm-, disp-, code-, target- [299] (a constant): [300] Like Verilog, ss… s'fnn… Let n be. ss… s represents the number of bits. If the number of bits is omitted, 32 bits are used. f is the radix. D: 10, h: 16, o: octal, b: binary, if these descriptions are omitted, decimal is used. nn… n is a constant value. If the constant value is not enough for the number of bits, the upper bit is filled with 0. If the constant value is larger than the number of bits, the number of bits is ignored. nn… You cannot use the delimiter '_' in n. Radix and constant values can also contain uppercase letters. [301] Yes: [302] 3'b001: 3-bit binary number [303] 32'hff: 32-bit hexadecimal number (higher bits are zero-extended) [304] 'o1234: 32-bit hexadecimal number (bit number omitted, same as 32'o1234) [305] 1: 32-bit decimal number (bit number and radix omitted, same as 32'd1) [306] 10'5: 10-bit decimal number (omit notation; same as 10'd5) [307] (supplement) [308] The following may be described. [309] a = b = c + d; [310] Function calls can also be used. [311] You can write function calls on the left side. [312] Mem Word (Rn) = a; [313] CTR [Imm 4] = b; [314] Concatenation operator [315] !!: bit concatenation [316] Partial bit cut [317] Specify as [msb: lsb] [318] Reserved function name [319] Memory access functions [320] MemWord [321] MemDoubleWord [322] MemByte [323] MemHWord [324] MemDefaultSize [325] Controlbus [326] Bit extension function [327] SignExtension [328] ZeroExtension [329] Condition judgment function [330] Overflow [331] (Left connection) [332] When using bit connection on the left side, enclose the whole with (). [333] (HI !! LO) = Rn * Rm; [334] (SIMD technology) [335] See the fifth embodiment. [336] (Error check function) [337] This is a representative of the error check function. [338] (1) Check duplicate of operation code [339] (2) Match of RO / RW and operation technique of register operand determined by instruction type [340] (3) Consistency of SIMD technology, Pack technology and operation technology: If there is no operation technology corresponding to the data width specified by SIMD and Pack, a warning is output. Specifically, the operation technique is checked for each data width designated by SIMD / Pack, and a warning is generated when there is no partial bit reference / substitution of the following bit widths. The relationship between data width and bit width is shown below. [341] Data width bit width (msb-lsb + 1) [342] B, UB8 [343] H, UH 16 [344] W, UW32 [345] A8, 16, 32 [346] (4) a reference to an undefined temporary variable [347] If the first expression of the temporary variable in the operation description is on the right side, a warning is output. [348] (5) If the temporary variable defining the value is not referenced, a warning is output. [349] Fig. 25 shows an example of an instruction set definition portion in the configuration specification file. This example shows the definition of the LW instruction and the SWAP instruction. In the operation description of the LW instruction (enclosed by {}), "Rn" is an operand variable of register designation, "disp8" is an operand variable of type disp, and "SP" is a register variable. "ZeroExtension" and "MemWord" are reserved functions that perform bit expansion and memory access, respectively. In addition, "tmp1" and "tmp2" in a SWAP instruction are temporary variables. [350] According to the seventh embodiment, high-level description is possible for the instruction operation description in the configuration specification file. For this reason, it is easy to add a new command, and the existing command can be easily interpreted. Therefore, the instruction can be improved and repaired easily, and the user's application development can be promoted. [351] <8th embodiment> [352] An eighth embodiment relates to pipeline technology. [353] From the pipeline description below, information for scheduling the compiler and information for automatically generating the head verification vector are generated. [354] Pipeline descriptions include two "pipeline type definitions" and "head information." [355] (1) Pipeline type definition [356] The format for a pipeline type definition is: [357] PTYPE: <type name>: <resource>, <operation>, <timing>, <argument> [: <resource>, <operation>, <timing>, <argument>: ....]; [358] Each PTYPE line requires at least one variable, "<Resource>, <Operation>, <Timing>, <Argument>". The four variables can be described continuously by any number, separated by ":". [359] The meanings of the four variables in the PTYPE line are as follows: In other words, the resource represents a register or the like, the operation represents a read / write or the like, and the timing represents a stage of the pipeline. The argument is an indicator of operands (registers, etc.). In other words, the PTYPE line indicates that the operation on the resource occurs at the stage of the pipeline. [360] Fig. 26 shows a description example of the PTYPE row. [361] (2) Head information [362] The format of the head information is as follows. [363] HAZARD: <Resource>: <Action 1> (Type Name 1), <Action 2> (Type Name 2) = <Number of Cycles>; [364] In the resource, the number of stalls when a type 1 preceding instruction performs operation 1 and a type 2 subsequent instruction performs operation 2 is shown. [365] 27 shows a description example of the head information. In the case of this head information, a pipeline type "ptl" instruction is written to a general register of a coprocessor. After this, when reading the same register with an instruction of the pipeline type "pt2", it must wait two cycles. [366] The head information and the pipeline definition specified for each command determine the number of stalls when the command sequence generated by the head is executed on the simulator. [367] For example, FIG. 28 shows the operation when the command "cinstl" is the pipeline type "ptl" and the command "cinst2" is the pipeline type "pt2". [368] In the case of the head information shown in Fig. 27, a write of a pipeline type " ptl " is written to a general register of a coprocessor. After that, when reading the same register with an instruction of the pipeline type "pt2", it must wait two cycles. In the example shown in Fig. 28, writing is performed in the general-purpose register "$ crl" of the coprocessor with the instruction "cinstl" in the stage "T". Subsequently, after waiting for two cycles, the instruction "cinst2" tries to read the same register. In this case, the instruction "cinst2" will stall one cycle in the simulator. [369] (Scheduling information for the compiler) [370] 29 shows an example of scheduling information for a compiler. [371] The example shown in FIG. 29 shows that the PTYPE2 instruction immediately after the PTYPE1 instruction stalls three cycles, and the PTYPE3 instruction immediately after the PTYPE2 instruction stalls four cycles. From this information, the compiler schedules three empty instructions between PTYPE1 and PTYPE2, and schedules four empty instructions between PTYPE1 and PTYPE3. [372] (Pipeline Operation Techniques for Creating Head Verification Vectors) [373] 30 illustrates an example of a pipeline operation technique. [374] This operating technique consists of a pipeline definition and an explicit stall specification. Details of this technique and generation of verification vectors therefrom are omitted. [375] According to the eighth embodiment, the configuration specification file may include a description of the pipeline definition. For this reason, a pipeline can be constructed. In addition, the pipeline definition may include a definition of the pipeline type and head information. [376] The configuration specification file may also contain scheduling information for the compiler regarding the pipeline. For this reason, the compiler can schedule the operation of the pipeline based on the scheduling information. [377] In addition, the configuration specification file may include a technique for generating a header verification vector with respect to the pipeline. This makes it possible to reliably verify the header of the pipeline. [378] <Ninth Embodiment> [379] The ninth embodiment relates to the synthesis of RTL. [380] FIG. 31 shows high-level synthesis of the user-defined module in the RTL generating unit shown in FIG. In other words, the high-order synthesis of the user custom instructions shown in Fig. 31 performs the matching and generation of the interface (I / F) between the core unit and the control path and the memory, in addition to the normal hardware resource allocation and scheduling. [381] Fig. 32 shows the interface matching method in synthesizing user custom commands. The high order synthesis shown in Fig. 31 generates the RTL of the instruction body. In this case, a separate interface circuit is generated between the instruction body portion and the core portion. The connection between the core unit and the interface circuit is represented by a signal of a register field of input / output, an operand signal of 16 bits, and a stall signal. The instruction body is described in the form called from this interface circuit. The connection between the command body and the interface circuit is represented by an argument of the module. [382] According to the ninth embodiment, high-order synthesis of user custom instructions can be performed by matching the normal hardware resource allocation and scheduling, and also the interface between the core unit and the control path and the memory. [383] <10th embodiment> [384] The tenth embodiment relates to generation of verification vectors. [385] Here, a method of generating data for generating an architecture verification program (AVP) from the configuration specification file described above will be described. [386] (Data required to create an AVP) [387] Herein, the verification program, specifically for verifying the function of the instruction unit of the processor, is called AVP. ISA information is used to generate this AVP. ISA information requires data described below. [388] Mnemonic [389] Operand Array [390] Operand Information [391] Type of operand (register / immediate) [392] Bit width of operand [393] If the operand is a register [394] (Generation method of ISA information) [395] Describes how to generate ISA information from an architecture database file. The register definition section defines the number of registers, the bit width of the register, and the like for each register type. The instruction defining unit is composed of a mnemonic, an operand array, an instruction operation defining unit, and the like. The instruction operation definition unit defines an instruction operation by describing a statement using an operand that appears in the operand array, a register that does not appear in the register array, a temporary variable, a constant, and the like. [396] 33 shows a command definition relating to the command CPXOR3, for example. The instruction CPXOR3 indicates that CRo, CRq, and CRp need to be described as register operands. Register names have different prefixes depending on the type of register, and registers beginning with "CR" represent general purpose registers of the coprocessor. The part enclosed by '{' and '}' is an instruction operation description part. In this example, it can be seen that the instruction assigns the result of the exclusive OR of the bits of the two coprocessor general-purpose registers CRp and CRq into CRo. [397] As described above, the instruction definition portion contains the information of the mnemonic and the arrangement of the operands. These pieces of information are directly information on the mnemonics of the ISA information and the arrays of the operands. The list of operand names is recorded in the operand array. Among the operand names, Imm * and Imm * are immediate values, and others are registers. By using this rule, the kind of each operand can be obtained from the operand array. [398] Information of each operand is obtained as follows. If the operand is a register, the bit width of the register is obtained from the register definition information. If the operand is immediate, the immediate bit width is obtained from the operand code. Specifically, the number of 'i's in the character string of the operand code is an immediate bit width. [399] If the operand is a register, the presence / absence of the reference / assignment of the operand is obtained by analyzing the syntax of the instruction operation description. [400] By implementing the above method by a program, the ISA information shown in FIG. 34 can be automatically generated from the instruction defining unit shown in FIG. 33 and the register information shown in FIG. [401] (How to use data) [402] ISA information is used to generate the verification program described by the assembler. First, the mnemonic and operand arrays are used for the purpose of generating the inspection target instruction code in the verification program. The operand information of each operand is used for the following purposes. [403] If the operand is an immediate operand, the inspection immediate data is generated using the information of the bit width. If the operand is a register operand and the register value is referenced, the value to be provided to the register is generated from the bit width information or the like. Generates the code to set the register from this generated value. There are several ways to generate a value. [404] The first method is a method of randomly generating a value from among a settable bit width (a numerical value including a sign). [405] The second method finds an area in which an input can be set (an area on a two-dimensional plane if it is two inputs), and subdivids the area sequentially. The center of gravity coordinates of this subdivided area are used as input values. [406] By the second method, it is possible to reliably select the point of the region. In addition, by generating as input data the points on the boundary and near the boundary mainly, the boundary condition can be inspected. [407] The details of the method of generating the verification program for verifying the individual command operations from the ISA information are omitted for convenience of explanation. [408] If the operand is a register operand and a value is assigned to the register, a code that outputs the operation result of the instruction inserted into the register to the log file is generated. From the ISA information shown in FIG. 34, the verification program shown in FIG. 35 is automatically generated. [409] According to the tenth embodiment, the verification vector generator may generate a verification vector of the processor from an operation command of the configuration specification file. This makes it possible to reliably verify the operation of the processor, which can contribute to the user's LSI development. [410] <Eleventh embodiment> [411] The eleventh embodiment relates to the generation of a simulator. [412] This section describes how to create a simulator from the configuration specification file. [413] 36 schematically illustrates the operation of the simulator generator. The simulator generator generates a simulator based on the configuration specification file and the C ++ model template prepared in advance. That is, the simulator generator generates the main part of the simulator, the decode table of the simulator, and the instruction definition part by incorporating information necessary for the C ++ model template. The main part is generated based on the header part and the register declaration part of the configuration specification file. Decode tables and command definitions are created based on the ISA portion of the configuration file. [414] Here, the decode table is a conversion table for converting a bit pattern of a code part in a program into an instruction string. The C ++ model template is a template for generating C ++ source code of a simulator. A C ++ model is generated by substituting the template with necessary information for the simulator generator. [415] The main section stores information on the entire simulator, such as the available instruction formats, the number and size of general purpose registers and control registers, and the headings between instructions. [416] The decode table stores the operation code portion of each command definition in the ISA portion of the configuration specification file. The instruction decode in the simulator is generated by comparing the operation code portion of this table with the operation code portion of the instruction to identify the instruction. [417] The command definition is mainly generated by converting the operation description of the configuration specification file into the C ++ description of the equivalent operation. The instruction definition section also includes information such as the type of the pipeline, the format of the trace output, the presence or absence of the sign extension of the immediate operands, and the transfer direction when transferring data between the registers of the core processor and the registers of the coprocessor. . [418] The method of adding the information of a transmission direction is as follows. [419] The information of the transmission direction is defined as one of the attributes for each command definition. In the coprocessor model file (input of = mkcop) of the simulator generator, it is described as follows. [420] {name => 'ICMOV', [421] cname => 'CMOV_1', [422] instType => 't64c_al', [423] instSubType => 'core-cop', # <= transfer from coprocess general register to core general register [424] regsbit => 'true', [425] opcodeA => '0xf', [426] opcodeB => '0x0', [427] opcodeC => '0x0', [428] opcodeD => '0x1', [429] func => ' [430] # Motion technology [431] ', [432] }, [433] The behavioral technique is basically created by converting a variable to a C ++ variable and converting the operator one-to-one with an equivalent C ++ operator. The write and read and reserve functions of registers and memory are created by calling API functions of the simulator prepared in advance. [434] For some expressions that are not found in C ++, the behavior description is converted before the conversion to C ++. For example, the bit connection described on the left side of the equation is converted as follows. [435] (Before conversion) [436] (A !! B) = Expression; [437] (After conversion) [438] TMP = Expression; [439] B = TMP [(B most significant B least significant 1): 0]; [440] A = TMP [(A highest + B highest · 1) :( B highest · B lowest)]; [441] (TMP is a temporary variable) [442] The SIMD notation is expanded as described in the fifth embodiment. [443] In the trace output, a register to which a value is written by the instruction operation is output. The presence or absence of writing to a register is determined by analyzing whether the register appears at the left side of the operation description of the instruction. Similarly, the data transfer between registers also determines a register appearing on the left side as a register for writing and a register appearing on the right side as a read register. It is assumed that data has been transferred from the read register to the written register. [444] According to the eleventh embodiment, the necessary simulator can be generated according to the description of the configuration specification file. Therefore, the user can simulate the application, so that the performance of the application can be known in a short time. This makes it possible to shorten the development period of the system-on-chip. [445] <Twelfth embodiment> [446] The twelfth embodiment relates to building a debug environment. [447] There are three counterparts for building a debug environment: [448] (1) Register Definition: [449] The debugger needs information about what registers are visible and rewritable. This information is generated from the register definition section of the configuration specification file. The registers that can be displayed are all the registers defined. A rewritable register or a field of a register (part of the register) is a register described as "rw" in the register definition shown in FIG. The register described by "r" cannot be rewritten in the debugger. [450] (2) reverse assembler: [451] The debugger writes the disassembler to the executable program. The inverse assembler recognizes an instruction and displays its mnemonics in the same way as the simulator's decode section. [452] (3) Debug Monitor: [453] The debug monitor sets the initial value of the register at the start of debugging. Information about the register (existing register) for which this initial value is to be set is obtained from the register definition section of the configuration specification file. [454] According to the twelfth embodiment, a debug environment is constructed from the configuration specification file. As a result, the user can obtain a debug environment for LSI development. Therefore, the user can debug the application, which makes it possible to shorten the development period of the application. [455] In addition, this invention is not limited to said each embodiment. [456] Fig. 37 shows an overview of a system-on-chip development environment generating apparatus to which the above embodiments are applied. The system-on-chip development environment generating device 50 includes a so-called general-purpose calculator, workstation, personal computer (PC), network computer (NC), and the like. The system-on-chip development environment generating device 50 has a hard disk device 50a (not shown). [457] The system-on-chip development environment generating device 50 also includes, for example, a floppy disk drive 52 and an optical disk drive 54. The floppy disk drive 52 is equipped with a floppy disk 53, and the optical disk drive 54 is equipped with an optical disk 55. [458] The drive device 57 connected to the system-on-chip development environment generating device 50 is, for example, a reader / writer of the memory card 58 or a reader / writer of the magnetic tape cartridge 59. By this drive device 57, the memory card 58 or the magnetic tape cartridge 59 can be accessed. [459] Programs such as the command interpreter, the RTL generator, the simulator customization unit, the compiler customization unit, the assembler customization unit, the verification vector generator, and the debugger generation unit, and the files such as the configuration designation file are the floppy disk 53 and the optical disk. 55, memory cards 58, magnetic tape cartridges 59, and the like, are stored in recording media. The above-described operation can be performed by reading these programs and files and installing them in the hard disk device 50a. It is also possible to use a transmission medium as the recording medium. [460] The above-described embodiments are to be considered in all respects only as illustrative and not restrictive. It is intended that the scope of the invention be defined not by the foregoing description of the embodiments, but rather by the claims, and shall include such modifications as come within the meaning and range equivalent to the claims. [461] As described above, according to the present invention, it is possible to easily create a development environment of a system-on-chip having high-performance hardware with sufficient flexibility.
权利要求:
Claims (90) [1" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Interpreting the input command, Generating, according to the interpreted command, a compiler customization unit, an assembler customization unit, and a simulator generation unit based on the information of the configuration specification file in which the system-on-chip configuration is described. The configuration specification file includes a hardware specification for executing an instruction, the compiler customization unit builds a compiler for developing a system-on-chip, the assembler customization unit builds an assembler, and the simulator generator generates a simulator. How to build. [2" claim-type="Currently amended] The method of claim 1, And the configuration specification file includes register definitions that define the configuration of the registers. [3" claim-type="Currently amended] The method of claim 2, And the register definition contains information defining how to use the register in the compiler. [4" claim-type="Currently amended] The method of claim 2, And the register definition has information defining how to use the register of the compiler, and if this information is omitted, the compiler customization section sets how to use the default register of the compiler. [5" claim-type="Currently amended] The method of claim 4, wherein And the compiler customization portion defines register pseudo variables directly accessible to each register based on the information in the register definition. [6" claim-type="Currently amended] The method of claim 2, The register definition has an alias definition of a register, the alias definition of which is supplied to the assembler customization portion. [7" claim-type="Currently amended] The method of claim 1, The development environment may further include at least one of an RTL generator, a verification vector generator, and a debugger generator. [8" claim-type="Currently amended] The method of claim 7, wherein And the register definition includes a register name, the register name being supplied to the compiler customizer, the assembler customizer, the simulator customizer, the RTL generator, the verify vector generator, and the debugger generator. [9" claim-type="Currently amended] The method of claim 2, The configuration specification file includes a specification of an instruction, an operand code, and an operation content. [10" claim-type="Currently amended] The method of claim 2, The compiler customization unit generates a machine instruction function definition based on the information in the instruction definition unit. [11" claim-type="Currently amended] The method of claim 1, Wherein the configuration specification file is one of a VLIW type processor, and the designation of hardware includes one of an instruction format of a VLIW, and a specification of a slot of a VLIW. [12" claim-type="Currently amended] The method of claim 11, The configuration specification file includes a slot definition for distinguishing which slot a command is placed in when parallelizing the command. [13" claim-type="Currently amended] The method of claim 11, And the configuration specification file includes a slot definition for reflecting slot information to be used in machine command function definitions when parallelizing the instructions. [14" claim-type="Currently amended] The method of claim 11, And a bit width of a temporary variable in the instruction operation description or a value after sign extension according to the specification of the processor, and supplying the information to the simulator customization unit to reflect the information to the simulator. [15" claim-type="Currently amended] The method of claim 13, And supplying the slot information to the assembler customization unit and reflecting the slot information to the assembler. [16" claim-type="Currently amended] The method of claim 15, And supplying the slot information to the verification vector generation unit and reflecting the slot information to the verification vector. [17" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Interpreting the input command, Generating, according to the interpreted command, a compiler customization unit, an assembler customization unit, and a simulator generation unit based on the information in the configuration specification file describing the system-on-chip configuration, The configuration specification file includes a technology in which the processor is a DSP type and the hardware designation is a DSP instruction format, the compiler customization section builds a compiler, the assembler customization section builds an assembler, and the simulator generator builds a simulator. Way. [18" claim-type="Currently amended] The method of claim 17, And the configuration specification file includes information specifying instructions of any bit width. [19" claim-type="Currently amended] The method of claim 17, And the configuration specification file includes information defining a register of any bit width. [20" claim-type="Currently amended] The method of claim 17, And the configuration specifying file includes information specifying a position of a decimal point of the fixed point library, wherein the compiler customization unit supplies this information to the fixed point library of the compiler. [21" claim-type="Currently amended] The method of claim 17, And the configuration specification file includes a function corresponding to the DSP of the compiler when the processor is a DSP type. [22" claim-type="Currently amended] The method of claim 17, A function corresponding to the DSP of the compiler includes at least one of a complex data type, an X / Y memory, a circular buffer, a fixed point data type, a bit inversion, and a heterogeneous register set. [23" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Interpreting the input command, Generating, according to the interpreted command, a compiler customization unit, an assembler customization unit, and a simulator generation unit based on the information in the configuration specification file describing the system-on-chip configuration, The configuration specification file includes a technology in which the processor is SIMD type and the hardware designation is in the SIMD instruction format, the compiler customizer builds a compiler, the assembler customizer builds an assembler, and the simulator generator builds a simulator. Way. [24" claim-type="Currently amended] The method of claim 23, wherein And the compiler customization portion generates a machine instruction function definition based on the information regarding the entered SIMD instruction. [25" claim-type="Currently amended] The method of claim 23, wherein And the compiler customization unit generates a special data type based on the information about the input SIMD instruction. [26" claim-type="Currently amended] The method of claim 23, wherein The simulator customization unit customizes the operation of the simulator based on the information about the input SIMD command. [27" claim-type="Currently amended] The method of claim 23, wherein And the simulator customization unit customizes a result output function of the simulator based on the information about the input SIMD command. [28" claim-type="Currently amended] The method of claim 23, wherein The operating description of the SIMD instruction is described in one instruction in which a plurality of instructions are combined. [29" claim-type="Currently amended] The method of claim 23, wherein The operating description of the SIMD command is described using an indicator. [30" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Selecting a required command from a plurality of command libraries including a plurality of defined commands, Merging these selected commands to create a development environment corresponding to the application, The development environment includes a compiler customization unit for building a compiler, an assembler customization unit for building an assembler, and a simulator generator for building a simulator. [31" claim-type="Currently amended] The method of claim 30, After selecting the required instructions from the plurality of instruction libraries, generating intermediate libraries for each of the instruction libraries and merging these intermediate libraries. [32" claim-type="Currently amended] The method of claim 30, Selecting a required command from the plurality of command libraries, and then creating an intermediate library for each of the command libraries, and merging the intermediate files of these intermediate libraries and the basic commands. [33" claim-type="Currently amended] The method of claim 30, The instruction in the instruction library can select a data type used by the instruction. [34" claim-type="Currently amended] The method of claim 30, Instructions in the instruction library can change the data type used by the instruction. [35" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Interpreting the input command, Generating a system-on-chip development environment based on information in a configuration specification file describing the configuration of the system-on-chip according to the interpreted command, The development environment includes a compiler customization unit that builds a compiler, an assembler customization unit that builds an assembler, and a simulator generation unit that builds a simulator, And the configuration specification file includes a senior description. [36" claim-type="Currently amended] 36. The method of claim 35 wherein The higher level technique includes at least bit concatenation, partial bit truncation, function format, sign cast operator, temporary variable, and overflow technique. [37" claim-type="Currently amended] 36. The method of claim 35 wherein The senior technique allows for describing bit concatenation even on the left side of the equation. [38" claim-type="Currently amended] 36. The method of claim 35 wherein The configuration specification file includes a description of the pipeline definition. [39" claim-type="Currently amended] 36. The method of claim 35 wherein The description of the pipeline definition includes a definition of a pipeline type. [40" claim-type="Currently amended] 36. The method of claim 35 wherein The description of the pipeline definition includes header information. [41" claim-type="Currently amended] 36. The method of claim 35 wherein Wherein the configuration specification file includes scheduling information for a compiler regarding a pipeline. [42" claim-type="Currently amended] 36. The method of claim 35 wherein Wherein the configuration specification file comprises a technique for generating a head verification vector with respect to the pipeline. [43" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Interpreting the input command, Generating, according to the interpreted command, an RTL generation unit from an operation instruction described in a configuration specification file describing a system-on-chip configuration, The RTL generation unit includes a scheduling unit for allocating and scheduling hardware resources, an interface matching unit for matching an interface between a core unit, a control path, and a memory, and a conversion unit for changing the C language to Verilog. [44" claim-type="Currently amended] The method of claim 43, And generating an RTL by matching an interface between a hardware resource allocation and scheduling, a core unit and a control path, and a memory from the operation command. [45" claim-type="Currently amended] In the method for creating a development environment for developing a system-on-chip, Interpreting the input command, In accordance with the interpreted command, creating a system-on-chip development environment based on information in a configuration specification file describing the system-on-chip configuration, The development environment includes a verification vector generating unit generating a verification vector, wherein the verification vector generating unit generates a verification vector of a processor from an operation command of the configuration specification file. [46" claim-type="Currently amended] The method of claim 45, And the verification vector generator generates ISA information from register information of the configuration specification file. [47" claim-type="Currently amended] A computer-readable storage medium storing a program for creating a development environment for developing a system-on-chip, A function of interpreting a command input to a computer, According to the interpreted command, the system-on-chip configuration includes a function of generating a compiler customization unit, an assembler customization unit, and a simulator generation unit based on the information in the configuration specification file described. The configuration specification file includes designation of hardware for executing an instruction, the compiler customization unit builds a compiler for developing a system-on-chip, the assembler customization unit builds an assembler, and the simulator generator generates a simulator. Computer readable storage media. [48" claim-type="Currently amended] The method of claim 47, And the configuration specifying file includes a register definition defining a register configuration. [49" claim-type="Currently amended] The method of claim 47, The register definition is a computer-readable storage medium having information defining how to use a register in the compiler. [50" claim-type="Currently amended] The method of claim 48, And the register definition has information defining how to use the register of the compiler, and if this information is omitted, the compiler customization section sets the way of using the default register of the compiler. [51" claim-type="Currently amended] 51. The method of claim 50, And the compiler customization portion defines register pseudo variables directly accessible to each register based on the information in the register definition. [52" claim-type="Currently amended] The method of claim 48, The register definition has an alias definition of a register, and the alias definition of the register is supplied to the assembler customization unit. [53" claim-type="Currently amended] The method of claim 47, The development environment further comprises a RTL generator, a verification vector generator, and a debugger generator. [54" claim-type="Currently amended] The method of claim 53, The register definition includes a register name, the register name being computer readable supplied to the compiler customizer, the assembler customizer, the simulator customizer, the RTL generator, the verify vector generator, and the debugger generator. Storage media. [55" claim-type="Currently amended] The method of claim 48, And the configuration specifying file includes a specification of an instruction, an operand code, and an operation content. [56" claim-type="Currently amended] The method of claim 48, And the compiler customization portion generates a machine instruction function definition based on the information in the instruction definition portion. [57" claim-type="Currently amended] The method of claim 48, And wherein the configuration specification file is one of a VLIW type processor, the hardware designation comprising one of an instruction format of the VLIW, and an assignment of a slot of the VLIW. [58" claim-type="Currently amended] The method of claim 57, And wherein the configuration specification file includes slot definitions for distinguishing which slots the instructions are placed in when parallelizing the instructions. [59" claim-type="Currently amended] The method of claim 57, And the configuration specification file includes a slot definition for reflecting slot information to be used in parallelizing instructions in a machine instruction function definition. [60" claim-type="Currently amended] The method of claim 57, The computer readable storage medium which designates the bit width of the temporary variable in a command operation description or the value after code extension according to a specification of a processor, and supplies the information to the said simulator customization part, and reflects it to the said simulator. [61" claim-type="Currently amended] The method of claim 59, And the slot information is supplied to the assembler customization unit and reflected in the assembler. [62" claim-type="Currently amended] The method of claim 59, And the slot information is supplied to the verification vector generating unit and reflected in the verification vector. [63" claim-type="Currently amended] A computer-readable storage medium storing a program for creating a development environment for developing a system-on-chip, A function of interpreting a command input to a computer, According to the interpreted command, based on the information in the configuration specification file describing the system-on-chip configuration, a compiler customization unit for constructing the compiler, an assembler customization unit for constructing the assembler, and a simulator generator for constructing the simulator Including the ability to generate The configuration specification file includes a technology in which the processor is a DSP type and the hardware designation is a DSP instruction format, the compiler customization section builds a compiler, the assembler customization section builds an assembler, and the simulator generator generates a simulator. Readable storage media. [64" claim-type="Currently amended] The method of claim 63, wherein And the configuration specifying file includes information specifying instructions of any bit width. [65" claim-type="Currently amended] The method of claim 63, wherein And the configuration specifying file includes information defining a register of any bit width. [66" claim-type="Currently amended] The method of claim 63, wherein And the configuration specifying file includes information specifying a position of a decimal point of the fixed point library, and the compiler customization unit supplies this information to the fixed point library of the compiler. [67" claim-type="Currently amended] The method of claim 63, wherein And the configuration specifying file includes a function corresponding to the DSP of the compiler when the processor is a DSP type. [68" claim-type="Currently amended] The method of claim 63, wherein And a function corresponding to the DSP of the compiler includes at least one of a complex data type, an X / Y memory, a circular buffer, a fixed point data type, bit inversion, and a set of heterogeneous registers. [69" claim-type="Currently amended] A computer-readable storage medium storing a program for creating a development environment for developing a system-on-chip, A function of interpreting a command input to a computer, And a function of generating a compiler customization unit, an assembler customization unit, and a simulator generation unit in accordance with the interpreted command based on the information in the configuration specification file. The configuration specification file includes a technology in which the processor is SIMD type and the hardware designation is in the SIMD instruction format, the compiler customizer builds a compiler, the assembler customizer builds an assembler, and the simulator generator builds a simulator. Computer-readable storage media. [70" claim-type="Currently amended] The method of claim 69, wherein And the compiler customization portion generates a machine instruction function definition based on the information about the input SIMD instruction. [71" claim-type="Currently amended] The method of claim 69, wherein And the compiler customization portion generates a special data type based on the information about the input SIMD instruction. [72" claim-type="Currently amended] The method of claim 69, wherein And the simulator customization unit customizes the operation of the simulator based on the information on the input SIMD instruction. [73" claim-type="Currently amended] The method of claim 69, wherein And the simulator customization unit customizes a result output function of the simulator based on information on the input SIMD instruction. [74" claim-type="Currently amended] The method of claim 69, wherein The operation description of the SIMD instruction is a computer-readable storage medium in which a plurality of instructions are combined into one instruction. [75" claim-type="Currently amended] The method of claim 69, wherein The operation description of the SIMD instruction is a computer-readable storage medium described using an indicator. [76" claim-type="Currently amended] A computer-readable storage medium storing a program for creating a development environment for developing a system-on-chip, A function of selecting a required command from a plurality of command libraries including a plurality of defined commands in a computer, Merge the selected commands to create a development environment corresponding to the application, The development environment includes a compiler customization unit for constructing a compiler, an assembler customization unit for constructing an assembler, and a simulator generator unit for constructing a simulator. [77" claim-type="Currently amended] 77. The method of claim 76, And selecting a required instruction from the plurality of instruction libraries, and then generating intermediate libraries for each of the instruction libraries and merging these intermediate libraries. [78" claim-type="Currently amended] 77. The method of claim 76, And selecting a required command from the plurality of command libraries, and generating an intermediate library for each of the command libraries, and merging the intermediate files of these intermediate libraries and basic instructions. [79" claim-type="Currently amended] 77. The method of claim 76, And a command in the command library can select a data type used by the command. [80" claim-type="Currently amended] 78. The method of claim 77 wherein A computer-readable storage medium in which the instructions in the instruction library can change the data type used by the instructions. [81" claim-type="Currently amended] A computer-readable storage medium storing a program for creating a development environment for developing a system-on-chip, A function of interpreting a command input to a computer, And a function for generating a compiler customization unit for constructing a compiler, an assembler customization unit for constructing an assembler, and a simulator generator for constructing a simulator, based on the information of the configuration specification file, in accordance with the interpreted command. The configuration specification file includes a high-level description of a system-on-chip configuration, wherein the compiler customization section builds a compiler, the assembler customization section builds an assembler, and the simulator generator generates a computer readable Storage media. [82" claim-type="Currently amended] 82. The method of claim 81 wherein And the higher description comprises at least bit concatenation, partial bit truncation, function format, sign cast operator, temporary variable, and operation description for overflow. [83" claim-type="Currently amended] 82. The method of claim 81 wherein The senior technology is a computer readable storage medium capable of describing bit connections even on the left side of the equation. [84" claim-type="Currently amended] 82. The method of claim 81 wherein And the configuration specification file comprises a description of a pipeline definition. [85" claim-type="Currently amended] 82. The method of claim 81 wherein The description of the pipeline definition includes a definition of the pipeline type. [86" claim-type="Currently amended] 82. The method of claim 81 wherein And the description of the pipeline definition comprises header information. [87" claim-type="Currently amended] 82. The method of claim 81 wherein And the configuration specification file includes scheduling information for a compiler regarding a pipeline. [88" claim-type="Currently amended] 82. The method of claim 81 wherein And the configuration specification file includes a technique for generating a verify verification vector with respect to the pipeline. [89" claim-type="Currently amended] A computer-readable storage medium storing a program for creating a development environment for developing a system-on-chip, A function of interpreting a command input to a computer, In accordance with the interpreted command, a function of generating an RTL generation unit including a scheduling unit, an interface matching unit, and a conversion unit from the operation instructions described in the configuration specification file describing the configuration of the system-on-chip, And the scheduling unit allocates and schedules hardware resources, the interface matching unit matches an interface between the core unit, the control path, and the memory, and the conversion unit changes the C language into Verilog. [90" claim-type="Currently amended] 91. The method of claim 89 wherein And the interface matching unit generates an RTL by matching hardware resource allocation and scheduling from the operation command and an interface between a core unit and a control path and a memory.
类似技术:
公开号 | 公开日 | 专利标题 Lubin et al.2015|Computing in operations research using Julia Leupers2013|Retargetable code generation for digital signal processors Levy et al.2014|Computer programming and architecture: The VAX Marwedel et al.2013|Code generation for embedded processors Liem2013|Retargetable Compilers for Embedded Core Processors: Methods and Experiences in Industrial Applications Ramsey et al.1997|Specifying representations of machine instructions Windh et al.2015|High-level language tools for reconfigurable computing Engblom2002|Processor pipelines and static worst-case execution time analysis Cardoso et al.2012|LARA: an aspect-oriented programming language for embedded systems Blazy et al.2009|Mechanized semantics for the Clight subset of the C language Gajski et al.1998|SpecSyn: An environment supporting the specify-explore-refine paradigm for hardware/software system design US5539907A|1996-07-23|System for monitoring computer system performance Barbacci1981|Instruction set processor specifications |: The notation and its applications US7509604B1|2009-03-24|Method and apparatus for formally comparing stream-based designs US6286132B1|2001-09-04|Debugging support apparatus, a parallel execution information generation device, a computer-readable recording medium storing a debugging support program, and a computer-readable recording medium storing a parallel execution information generation program US5896521A|1999-04-20|Processor synthesis system and processor synthesis method US7703085B2|2010-04-20|Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms US9582278B2|2017-02-28|Automated processor generation system and method for designing a configurable processor Muchnick1997|Advanced compiler design implementation Hoffmann et al.2002|Architecture exploration for embedded processors with LISA US7299458B2|2007-11-20|System and method for converting control flow graph representations to control-dataflow graph representations DE112012003780T5|2014-06-18|Associate code for an extended application binary interface | with decryption time instruction optimization US6877150B1|2005-04-05|Method of transforming software language constructs to functional hardware equivalents Leupers et al.1998|Retargetable code generation based on structural processor description US7155708B2|2006-12-26|Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
同族专利:
公开号 | 公开日 TW571237B|2004-01-11| CN100338568C|2007-09-19| JP2003323463A|2003-11-14| US7168060B2|2007-01-23| CN1453699A|2003-11-05| KR100533307B1|2005-12-05| US20030204819A1|2003-10-30| EP1357485A2|2003-10-29| US20070061763A1|2007-03-15| JP4202673B2|2008-12-24| EP1357485A3|2008-10-22|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2002-04-26|Priority to JP2002127381A 2002-04-26|Priority to JPJP-P-2002-00127381 2002-10-30|Application filed by 가부시끼가이샤 도시바 2003-11-01|Publication of KR20030084554A 2005-12-05|Application granted 2005-12-05|Publication of KR100533307B1
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 JP2002127381A|JP4202673B2|2002-04-26|2002-04-26|System LSI development environment generation method and program thereof| JPJP-P-2002-00127381|2002-04-26| 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|